Modern data processing systems require the rapid transfer of data between integrated circuits (“chips”). For example, a central processing unit (CPU) transfers data to the memory system, which may include a memory controller and off-chip cache. In a multi-CPU system, data may be transferred between CPUs. As CPU speeds increase, the speed of the interface between chips (bus cycle time) becomes a limiting constraint because latencies across the interfaces may exceed the system clock period.
When data is launched from one chip to another chip, it can be launched simultaneously within numerous clock/data groups. Each clock/data group consists of multiple data bits and a clock signal, each of which travels over an individual conductor. Due to process variations and varying conductor lengths, the individual bits within a clock/data group may arrive at the receiving chip at different instances. Therefore, the individual bits of data and the clock within a clock/data group must be realigned upon arrival on the receiving chip. At the receiving end, the clock/data signals can be delayed to align the signals with respect to a sampling edge of the received clock. While, aligning the individual data bits within a clock/data group at the receiving end is necessary, such delays can cause jitter and other forms of distortion. In addition to causing jitter and distortion, delaying data signals can require extensive administrative overhead and additional circuitry.
Thus, there is a need in the art for apparatus and methods to accommodate high speed data transfers between chips in data processing systems. In particular, there is a need for mechanisms to ensure data synchronization at a synchronous interface if it is a receiving chip while limiting the associated jitter and distortion that is often created during such synchronization.
Eye diagrams are a conventional format for representing parametric information about signals, and especially digital signals. The width of the eye opening defines the time interval over which the received signal can be sampled without imposition of errors such as errors caused by inter-symbol interference. Additional parameters associated with an eye pattern such as the slope of the pattern can be a measure of receiver sensitivity, while the vertical eye opening can define a noise margin for the receiver. Various prior art eye diagram testers are known, but we shall call the technique described in the two incorporated Applications, an Eye Diagram Analyzer, or EDA for short.
A modern eye diagram for a digital signal is not so much a trace formed continuously in the time domain, as it is an “eye” shape composed of closely spaced points (illuminated pixels) representing many individual measurement (time, voltage) samples taken upon separate instances of a signal occurring on a channel of interest, and which were then stored in a memory. Each measurement sample contributes to a displayed pixel. The eye shape appears continuous because the collection of pixels is rather dense, owing to the large number of times that the signal is sampled. Unlike a true continuous technique, however, there may be detached pixels that are separated from the main body of the eye shape.
In any event, the vertical axis is voltage, and the horizontal axis represents the differences in time (i.e., various offsets) between some reference event and the locations for the measurement samples. The reference event is generally an edge of a clock signal in the system under test, and represents directly or through some fixed delay the expected point in time when the value of an applied data signal would be captured by some receiving circuit in an SUT (System Under Test), and is derived from an application of the SUT's clock to the Eye Diagram Analyzer. The time axis will generally have enough length to depict one complete eye-shape (cycle of a SUT signal) centered about the reference, with sometimes perhaps several additional eyes (cycles) before and after. A bit period is generally a measure of the horizontal opening of an eye diagram at the crossing points of the eye and is usually measured in picoseconds for a high speed digital signal. The bit period is commonly called the Unit Interval (UI) when describing an eye diagram. The advantage of using UI instead of actual time on the horizontal axis is that it is normalized and eye diagrams with different data rates can be easily compared.
Different (X, Y) regions within a (sample) space containing an eye diagram represent different combinations of time and voltage. Assume that the eye diagram is composed of a number of pixels, and temporarily assume that the resolution is such that each different (X, Y) pixel position can represent a different combination of time and voltage (and vice versa), which combinations of time and voltage we shall term “measurement points.” What the Eye Diagram Analyzer measures is the number of times, out of a counted number of clock cycles, that the signal on the channel being monitored passed through a selected measurement point. Then another measurement point is selected, and the process repeated until there are enough measurement points for all the pixels needed for the display. Points along the visible eye diagram trace describe something about those (time, voltage) combinations that were observed to actually occur in the data signal under test.
The value of a (time, voltage) combination is represented by its location, but the color or intensity of the measured result is determined in a way that assists in further appreciating the meaning of the measured data, such as how often a (time, voltage) point was occupied by the signal being measured. The range over which the measurement points are varied is called a “sample space” and is defined during a measurement set-up operation. And in reality, we define the sample space and the resolution for neighboring measurement points first, start the measurement and then let the analyzer figure out later how to ascribe values to the pixels of the display. The “display” is, of course, an arbitrary graphic output device such as a printer or an X Window of some as yet unknown size in a window manager (e.g., X11) for a computer operating system. (A one-to-one correspondence between display pixels and measurement points is not required. It will be appreciated that it is conventional for display systems, such as X Windows, to figure out how to ascribe values to the pixels for an image when the correspondence between the display's pixel locations and the measurements that are the original image description is not one-to-one.)